package cn.tedu.csmall.stock.webapi.quartz.rabbit;

import cn.tedu.csmall.commons.pojo.stock.entity.Stock;
import cn.tedu.csmall.stock.webapi.quartz.config.RabbitMQConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

// Spring连接RabbitMQ接收消息的功能,也是通过我们添加的依赖实现的
// 要接收消息的类,必须保持在Spring容器中
@Component
@Slf4j
// 下面的注解是声明Rabbit监听器,指定要监听的队列名称
// 当指定的队列名称有消息进入时,会自动触发调用这个类中的指定方法
@RabbitListener(queues = RabbitMQConfig.STOCK_QUEUE)
public class RabbitMQConsumer {

    // 当类上定义的队列名称接收到消息时,监听器会运行类中由 @RabbitHandler标记的方法
    // 当前类只能有一个方法被@RabbitHandler标记
    // 这个方法的参数类型直接声明为消息发送方发送的对象类型即可,它会自动进行转换
    @RabbitHandler
    public void received(Stock stock){
        // stock对象就是发送到RabbitMQ队列的消息内容
        // 这里没有其他操作,直接输出
        log.info("接收到消息:{}",stock);
    }

}







